package main

import "fmt"

// for range从通道循环取值
func main() {
	ch1 := make(chan int)
	ch2 := make(chan int)

	// 开启一个goroutine 把100个数放到ch1中
	go func() {
		for i := 0; i < 100; i++ {
			ch1 <- i
		}
		close(ch1)
	}()

	// 再开启一个goroutine 接受ch1的值然后平方下，发送到ch2中
	go func() {
		for i := 0; i < 100; i++ {
			i, ok := <-ch1
			if !ok {
				break
			}
			ch2 <- i * i
		}
		close(ch2)
	}()
	// 主goroutine遍历打印
	// 通道关闭的时候 for range也会结束
	for i := range ch2 {
		fmt.Println(i)
	}
}
